Micron Document
`:top
`!Enterprise JavaBeans`! (`!EJB`!) est une architecture de `F33f`_`[composants logiciels`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Composant_logiciel]`_`f côté `F33f`_`[serveur`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Serveur_informatique]`_`f pour la plateforme de développement `F33f`_`[Java EE`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Java_EE]`_`f.

Cette architecture propose un cadre pour créer des composants distribués (c’est-à-dire déployés sur des serveurs distants) écrit en langage de programmation `F33f`_`[Java`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Java_(langage)]`_`f hébergés au sein d'un `F33f`_`[serveur applicatif`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Serveur_d'applications]`_`f permettant de représenter des données (EJB dit `*entité`*), de proposer des services avec ou sans conservation d'état entre les appels (EJB dit `*session`*), ou encore d'accomplir des tâches de manière asynchrone (EJB dit `*message`*). Tous les EJB peuvent évoluer dans un contexte `F33f`_`[transactionnel`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Transaction_informatique]`_`f.

De la version 1.0 à la version 2.1, un EJB était accompagné d'un ou plusieurs fichiers de déploiement écrits en `F33f`_`[XML`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Extensible_Markup_Language]`_`f qui permettait au serveur applicatif de déployer correctement l'`F33f`_`[objet`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Objet_(informatique)]`_`f au sein d'un conteneur. C'était notamment dans ces fichiers de déploiement que le développeur avait la possibilité de préciser le cadre transactionnel dans lequel l'objet allait s'exécuter. Depuis la version 3.0, le modèle EJB utilise le principe d'`F33f`_`[annotation Java`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Annotation_(Java)]`_`f (meta-données) pour spécifier toute la configuration et les propriétés transactionnelles de l'objet. Le fichier de `F33f`_`[code source`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Code_source]`_`f de l'EJB se suffit à lui-même.

C'est le serveur applicatif qui est chargé de la création, la destruction, la passivation ou l'activation de ses composants en fonction des besoins. Le client via un appel `F33f`_`[RMI`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Remote_method_invocation_(Java)]`_`f (ou une de ses dérivées) va rechercher un EJB par son nom logique `F33f`_`[JNDI`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Java_Naming_and_Directory_Interface]`_`f et appeler une ou plusieurs `F33f`_`[méthodes`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Méthode_(informatique)]`_`f de cet objet.

>>Contents

• `F0af`_`[Les EJB session ( Session Bean )`#les-ejb-session-session-bean]`_`f
• `F0af`_`[Stateless Session Bean`#stateless-session-bean]`_`f
• `F0af`_`[Stateful Session Bean`#stateful-session-bean]`_`f
• `F0af`_`[Les EJB entité`#les-ejb-entit]`_`f
• `F0af`_`[Les EJB message`#les-ejb-message]`_`f
• `F0af`_`[Voir aussi`#voir-aussi]`_`f
• `F0af`_`[Article connexe`#article-connexe]`_`f
• `F0af`_`[Liens externes`#liens-externes]`_`f

-─

>>Les EJB session ( Session Bean )

Les EJB sessions sont des objets proposant des services à leur appelant. Ils proposent un certain nombre de méthodes écrites par le développeur. Il y a deux types d'EJB `*session`* : les EJB sessions ne conservant pas leur état entre deux appels (EJB dit « `*stateless`* »), et ceux le conservant (EJB dit « `*stateful`* »). Il n'y a aucune garantie qu'entre deux appels au même EJB l'instance de l'objet soit la même.

>>>Stateless Session Bean

La particularité principale d'un Stateless Session Bean est de ne pas conserver d'état entre les différents appels.

`B100`F9d9@Stateless`f`b
`B100`F9d9public class StatelessSessionBeanImpl implements StatelessSessionBean {`f`b
`B100`F9d9`f`b
`B100`F9d9 public String sayHello() {`f`b
`B100`F9d9 return ("Hello!");`f`b
`B100`F9d9 }`f`b
`B100`F9d9}`f`b

>>>Stateful Session Bean

La particularité principale d'un Stateful Session Bean est de conserver son état entre différents appels de méthodes.

`B100`F9d9@Stateful`f`b
`B100`F9d9public class StatefulSessionBeanImpl implements StatefulSessionBean {`f`b
`B100`F9d9`f`b
`B100`F9d9 private String user;`f`b
`B100`F9d9`f`b
`B100`F9d9 public void login(String user) {`f`b
`B100`F9d9 this.user = user;`f`b
`B100`F9d9 }`f`b
`B100`F9d9`f`b
`B100`F9d9 public String sayHello() {`f`b
`B100`F9d9 if (user == null) {`f`b
`B100`F9d9 return ("Hello world !");`f`b
`B100`F9d9 }`f`b
`B100`F9d9 return ("Hello " + user + " !");`f`b
`B100`F9d9 }`f`b
`B100`F9d9}`f`b

>>Les EJB entité

Les EJB `*entité`* sont des `*beans`* ayant majoritairement pour vocation d'être persistants, c'est-à-dire pouvant être stockés sur un support physique entre deux sessions.
Les EJB `*entité`* peuvent être de deux sortes : BMP (`*Bean Managed Persistence`*) ou CMP (`*Container Managed Persistence`*) (voir `F33f`_`[Java Persistence API`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Java_Persistence_API]`_`f).

Les EJB BMP sont des `*beans`* dont la persistance a dû être programmée par le développeur (ce dernier doit respecter un format pour la classe et les méthodes à implémenter sont imposées par la norme).

Les EJB CMP sont eux des `*beans`* dont la persistance est directement assurée par le conteneur d'EJB ; le `F33f`_`[mapping`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Data_mapping]`_`f entre l'objet et son support de persistance est indiqué au conteneur via les fichiers descripteurs de déploiement. Le développeur, une fois le fichier de déploiement réalisé, n'a pas besoin d'écrire le code de persistance.

Depuis la version 3.0 de la spécification EJB, la notion de bean BMP/CMP n'existe plus : les EJB `*entité`* sont directement liés à la base de données via un `F33f`_`[mapping objet-relationnel`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Mapping_objet-relationnel]`_`f. Ce mapping est défini soit dans un `F33f`_`[fichier de configuration`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Fichier_de_configuration]`_`f XML, ou directement dans le code Java en utilisant des annotations.

Cette nouvelle `F33f`_`[interface de programmation`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Interface_de_programmation]`_`f des EJB `*entité`* est appelée `F33f`_`[Java Persistance API`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Java_Persistance_API]`_`f.

>>Les EJB message

Depuis la norme EJB 2.0 (2015) , cette architecture propose un troisième type de composant : les EJB `*message`* permettant de déclencher un processus côté serveur applicatif lors de la publication d'un message asynchrone. Pour ces composants, le client ne s'adresse pas directement aux composants mais publie un message sur un réceptacle `F33f`_`[JMS`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Java_Message_Service]`_`f (`*queue`* ou `*topic`*) configuré sur le serveur applicatif qui va alors déclencher l'activation par ce serveur d'une instance de l'EJB concerné pour pouvoir traiter ce message.

>>Voir aussi

>>>Article connexe

• `F33f`_`[Java Data Object`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Java_Data_Object]`_`f (JDO)

>>>Liens externes

• Cours et tutoriels sur les EJB

• Portail de la programmation informatique

`c`F0af`_`[↑ Back to top`#top]`_`f`a